home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Internet Tools 1995 April / Internet Tools.iso / osi / isode / vmsisode / vmsisode80_tar.Z / vmsisode80_tar / sockit / gccinclude / netinet / in.h
Encoding:
C/C++ Source or Header  |  1990-04-24  |  2.7 KB  |  114 lines

  1. /*
  2.  * Copyright (c) 1982, 1986 Regents of the University of California.
  3.  * All rights reserved.  The Berkeley software License Agreement
  4.  * specifies the terms and conditions for redistribution.
  5.  *
  6.  *    @(#)in.h    7.1 (Berkeley) 6/5/86
  7.  */
  8.  
  9. /*
  10.  * Constants and structures defined by the internet system,
  11.  * Per RFC 790, September 1981.
  12.  */
  13.  
  14. /*
  15.  * Protocols
  16.  */
  17. #define    IPPROTO_IP        0        /* dummy for IP */
  18. #define    IPPROTO_ICMP        1        /* control message protocol */
  19. #define    IPPROTO_GGP        2        /* gateway^2 (deprecated) */
  20. #define    IPPROTO_TCP        6        /* tcp */
  21. #define    IPPROTO_EGP        8        /* exterior gateway protocol */
  22. #define    IPPROTO_PUP        12        /* pup */
  23. #define    IPPROTO_UDP        17        /* user datagram protocol */
  24. #define    IPPROTO_IDP        22        /* xns idp */
  25.  
  26. #define    IPPROTO_RAW        255        /* raw IP packet */
  27. #define    IPPROTO_MAX        256
  28.  
  29.  
  30. /*
  31.  * Ports < IPPORT_RESERVED are reserved for
  32.  * privileged processes (e.g. root).
  33.  * Ports > IPPORT_USERRESERVED are reserved
  34.  * for servers, not necessarily privileged.
  35.  */
  36. #define    IPPORT_RESERVED        1024
  37. #define    IPPORT_USERRESERVED    5000
  38.  
  39. /*
  40.  * Link numbers
  41.  */
  42. #define    IMPLINK_IP        155
  43. #define    IMPLINK_LOWEXPER    156
  44. #define    IMPLINK_HIGHEXPER    158
  45.  
  46. /*
  47.  * Internet address (a structure for historical reasons)
  48.  */
  49. struct in_addr {
  50.     u_long s_addr;
  51. };
  52.  
  53. /*
  54.  * Definitions of bits in internet address integers.
  55.  * On subnets, the decomposition of addresses to host and net parts
  56.  * is done according to subnet mask, not the masks here.
  57.  */
  58. #define    IN_CLASSA(i)        (((long)(i) & 0x80000000) == 0)
  59. #define    IN_CLASSA_NET        0xff000000
  60. #define    IN_CLASSA_NSHIFT    24
  61. #define    IN_CLASSA_HOST        0x00ffffff
  62. #define    IN_CLASSA_MAX        128
  63.  
  64. #define    IN_CLASSB(i)        (((long)(i) & 0xc0000000) == 0x80000000)
  65. #define    IN_CLASSB_NET        0xffff0000
  66. #define    IN_CLASSB_NSHIFT    16
  67. #define    IN_CLASSB_HOST        0x0000ffff
  68. #define    IN_CLASSB_MAX        65536
  69.  
  70. #define    IN_CLASSC(i)        (((long)(i) & 0xc0000000) == 0xc0000000)
  71. #define    IN_CLASSC_NET        0xffffff00
  72. #define    IN_CLASSC_NSHIFT    8
  73. #define    IN_CLASSC_HOST        0x000000ff
  74.  
  75. #define    INADDR_ANY        (u_long)0x00000000
  76. #define    INADDR_BROADCAST    (u_long)0xffffffff    /* must be masked */
  77.  
  78. /*
  79.  * Socket address, internet style.
  80.  */
  81. struct sockaddr_in {
  82.     short    sin_family;
  83.     u_short    sin_port;
  84.     struct    in_addr sin_addr;
  85.     char    sin_zero[8];
  86. };
  87.  
  88. /*
  89.  * Options for use with [gs]etsockopt at the IP level.
  90.  */
  91. #define    IP_OPTIONS    1        /* set/get IP per-packet options */
  92.  
  93. #if !defined(vax) && !defined(ntohl) && !defined(lint)
  94. /*
  95.  * Macros for number representation conversion.
  96.  */
  97. #define    ntohl(x)    (x)
  98. #define    ntohs(x)    (x)
  99. #define    htonl(x)    (x)
  100. #define    htons(x)    (x)
  101. #endif
  102.  
  103. #if !defined(ntohl) && (defined(vax) || defined(lint))
  104. u_short    ntohs(), htons();
  105. u_long    ntohl(), htonl();
  106. #endif
  107.  
  108. #ifdef KERNEL
  109. extern    struct domain inetdomain;
  110. extern    struct protosw inetsw[];
  111. struct    in_addr in_makeaddr();
  112. u_long    in_netof(), in_lnaof();
  113. #endif
  114.